import { mount, createLocalVue } from '@vue/test-utils';
import VueRouter from 'vue-router';
import ElementUI from 'element-ui';
import Breadcrumb from '@/components/Breadcrumb/index.vue';

const localVue = createLocalVue();
localVue.use(VueRouter);
localVue.use(ElementUI);

const routes = [
    {
        'path': '/',
        'children': [{
            'path': 'dashboard'
        }]
    },
    {
        'path': '/menu',
        'children': [{
            'path': 'menu1',
            'meta': { 'title': 'menu1' },
            'children': [{
                'path': 'menu1-1',
                'meta': { 'title': 'menu1-1' }
            },
            {
                'path': 'menu1-2',
                'redirect': 'noredirect',
                'meta': { 'title': 'menu1-2' },
                'children': [{
                    'path': 'menu1-2-1',
                    'meta': { 'title': 'menu1-2-1' }
                },
                {
                    'path': 'menu1-2-2'
                }]
            }]
        }]
    }];

const router = new VueRouter({
    routes
});

describe('Breadcrumb.vue', () => {
    const wrapper = mount(Breadcrumb, {
        localVue

    });

    it('dashboard', () => {
        router.push('/dashboard');
        const len = wrapper.findAll('.el-breadcrumb__inner').length;
        expect(len).toBe(1);
    });

    it('normal route', () => {
        router.push('/menu/menu1');
        const len = wrapper.findAll('.el-breadcrumb__inner').length;
        expect(len).toBe(2);
    });

    it('nested route', () => {
        router.push('/menu/menu1/menu1-2/menu1-2-1');
        const len = wrapper.findAll('.el-breadcrumb__inner').length;
        expect(len).toBe(4);
    });

    it('no meta.title', () => {
        router.push('/menu/menu1/menu1-2/menu1-2-2');
        const len = wrapper.findAll('.el-breadcrumb__inner').length;
        expect(len).toBe(3);
    });

    it('click link', () => {
        router.push('/menu/menu1/menu1-2/menu1-2-2');
        const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner');
        const second = breadcrumbArray.at(1);
        const href = second.find('a').text();
        expect(href).toBe('menu1');
    });

    it('noredirect', () => {
        router.push('/menu/menu1/menu1-2/menu1-2-1');
        const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner');
        const redirectBreadcrumb = breadcrumbArray.at(2);
        expect(redirectBreadcrumb.contains('a')).toBe(false);
    });

    it('last breadcrumb', () => {
        router.push('/menu/menu1/menu1-2/menu1-2-1');
        const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner');
        const redirectBreadcrumb = breadcrumbArray.at(3);
        expect(redirectBreadcrumb.contains('a')).toBe(false);
    });
});
